#!/usr/bin/env python3
"""
参数管理系统客户端包安装和测试脚本
"""
import subprocess
import sys
import os


def run_command(command, description):
    """运行命令并显示结果"""
    print(f"\n{'='*50}")
    print(f"执行: {description}")
    print(f"命令: {command}")
    print('='*50)
    
    try:
        result = subprocess.run(command, shell=True, check=True, capture_output=True, text=True)
        print("✅ 成功")
        if result.stdout:
            print("输出:")
            print(result.stdout)
        return True
    except subprocess.CalledProcessError as e:
        print("❌ 失败")
        print(f"错误: {e}")
        if e.stdout:
            print("标准输出:")
            print(e.stdout)
        if e.stderr:
            print("错误输出:")
            print(e.stderr)
        return False


def main():
    """主函数"""
    print("参数管理系统客户端包安装和测试")
    print("="*60)
    
    # 检查当前目录
    if not os.path.exists("setup.py"):
        print("❌ 请在包根目录下运行此脚本")
        return 1
    
    # 1. 安装包（开发模式）
    if not run_command("pip install -e .", "安装包（开发模式）"):
        return 1
    
    # 2. 运行基本测试
    if not run_command("python -c \"from param_management_client import ParameterClient; print('导入成功')\"", "测试包导入"):
        return 1
    
    # 3. 运行示例
    if os.path.exists("examples/basic_usage.py"):
        if not run_command("python examples/basic_usage.py", "运行基本使用示例"):
            print("⚠️  基本使用示例失败（可能是服务器未运行）")
    
    # 4. 运行Pyomo集成示例
    if os.path.exists("examples/pyomo_integration.py"):
        if not run_command("python examples/pyomo_integration.py", "运行Pyomo集成示例"):
            print("⚠️  Pyomo集成示例失败（可能是Pyomo未安装或服务器未运行）")
    
    # 5. 运行测试套件
    if os.path.exists("tests/test_client.py"):
        if not run_command("python -m pytest tests/ -v", "运行测试套件"):
            print("⚠️  测试套件失败")
    
    print("\n" + "="*60)
    print("🎉 安装和测试完成！")
    print("\n使用说明:")
    print("1. 确保参数管理系统服务器正在运行")
    print("2. 使用以下代码开始:")
    print("   from param_management_client import ParameterClient")
    print("   client = ParameterClient(host='localhost', port=8000, project_name='your_project')")
    print("   project = client.get_project()")
    print("   print(project.wind_params.capital_ratio)")
    
    return 0


if __name__ == "__main__":
    sys.exit(main())
